package linter.linterjava.service;

import linter.linterjava.POJO.DTO.UserDTO;
import linter.linterjava.custom.ResultVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author 北煜
 * 使用@Service注解声明这是一个Spring管理的服务层组件
 */
@Service
public class UserQueryService {


    /**
     * 定义一个UserService类型的私有成员变量，用于调用UserService中的方法
     */
    private final UserService userService;

    /**
     * @param userService
     * 构造函数，用于注入UserService的实例
     * 这里使用@Autowired注解来自动装配UserService的实例
     */
    @Autowired
    public UserQueryService(UserService userService) {
        // 将传入的UserService实例赋值给成员变量
        this.userService = userService;
    }

    /**
     * @param username
     * 根据用户名获取用户信息
     * 参数username表示要查询的用户名
     * 方法体中调用了UserService中的方法，根据用户名获取用户信息
     * @return
     * 返回一个ResultVO对象，表示一个响应结果
     * 响应结果中包含一个UserDTO对象，表示查询到的用户信息
     * 如果查询成功，则响应结果的状态码为200，表示操作成功；如果查询失败，则响应结果的状态码为500，表示操作失败
     */
    public ResultVO<UserDTO> getUserByUsername(String username) {
        // 调用UserService中的方法，传入用户名参数，获取UserDTO对象
        UserDTO userDTO = userService.getUserByUsername(username);

        // 使用ResultVO的静态方法success创建一个成功的响应结果对象，
        // 并将之前获取的UserDTO对象作为参数传入，封装成响应结果返回
        return ResultVO.success(userDTO);
    }
}
